One or more aspects relate, in general, to multiprocessing computing environments, and in particular, to transactional processing within such computing environments.
In a transactional system, one or more processors perform transactions execution. During execution of a given transaction, a conflict may be detected and if a conflict is detected, the given transaction is aborted. Conflicts occur, for example, when one processor writes data that another processor is reading. A transactional core does not currently have any means to avoid or defer a conflict, thus, it aborts the transaction.
When constrained transactions are being executed, they complete in accordance with the Industry Standard Architecture (ISA) specification. The key difference between constrained and non-constrained transactions is that in the case of a constrained transaction, in the absence of repeated interruptions or other constraint violations, a constrained transaction is assured of eventual completion and therefore does not need a fall-back path. Thus, when a constrained transaction fails repeatedly, the computer system re-executes the transaction with escalating means to guarantee completion. The escalations employed include, but are not limited to, acquiring locks to exclude other cores. These escalations not only negatively impact the performance of the computer system as a whole, but they are provide no guarantee that the constrained transaction will be completed.